using System;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using JNPF.Basics.Models;
using JNPF.Basics.Logic;
using JNPF.Utils;
using System.Threading.Tasks;
using System.Linq;
using JNPF.Utils.Controller;
using JNPF.Basics.Logic.Common.Login;
using JNPF.Utils.Extensions;

namespace JNPF.Basics.Controller
{
	[Route("api/Jiushi/[Controller]")]
    public class CustomercreditreportController : BaseApiController
    {
        private CustomercreditreportBll CustomercreditreportService=new CustomercreditreportBll();
        private BillRuleBll billRuleService = new BillRuleBll();
        private DataInterfaceBll dataInterfaceBll = new DataInterfaceBll();
        private UserBll userBll = new UserBll();
        private OrganizeBll organizeBll = new OrganizeBll();


		#region GET

		/// <summary>
		/// 获取信息
		/// </summary>
		/// <param name="id">主键id</param>
		/// <returns></returns>
		[HttpGet("{id}")]
		public async Task<ResponseResult> GetInfo(int id)
		{
			var data = await CustomercreditreportService.GetInfo(id);
			var output = data.MapTo<CustomercreditreportUpOutput>();
			return Success(output);
		}

		/// <summary>
		/// 获取列表
		/// </summary>
		/// <param name="input">请求参数</param>
		/// <returns></returns>
		[HttpGet]
		public async Task<ResponseResult> GetList(CustomercreditreportListQueryInput input)
		{
			var data = await CustomercreditreportService.GetPageList(input);
			var outputList = data.list.MapToList<CustomercreditreportListOutput>();
			outputList.ForEach(o =>
			{
			});
			var output = new PageResult()
			{
				list = outputList,
				pagination = data.pagination
			};
			return Success(output);
		}

		#endregion

		#region POST

		/// <summary>
		/// 新建
		/// </summary>
		/// <param name="input">新建输入</param>
		/// <returns></returns>
		[HttpPost]
		public async Task<ResponseResult> Create([FromBody] CustomercreditreportCrInput input)
		{
			var entity = input.MapTo<CustomercreditreportEntity>();
			await CustomercreditreportService.Create(entity);
			return Success("新建成功");
		}

		/// <summary>
		/// 编辑
		/// </summary>
		/// <param name="id">主键id</param>
		/// <param name="input">编辑输入</param>
		/// <returns></returns>
		[HttpPut("{id}")]
		public async Task<ResponseResult> Update(int id, [FromBody] CustomercreditreportCrInput input)
		{
			var entity = input.MapTo<CustomercreditreportEntity>();
			var isOk = await CustomercreditreportService.Update(id, entity);
			return isOk > 0 ? Success("修改成功") : Error("修改失败");
		}

		/// <summary>
		/// 删除接口
		/// </summary>
		/// <param name="id">主键id</param>
		/// <returns></returns>
		[HttpDelete("{id}")]
		public async Task<ResponseResult> Delete(int id)
		{
			var entity = await CustomercreditreportService.GetInfo(id);
			var isOk = await CustomercreditreportService.Delete(entity);
			return isOk > 0 ? Success("删除成功") : Error("删除失败");
		}

		#endregion

	}
}